🧩 III. 알고리즘과 프로그래밍 > 06 함수와 디버깅

함수와 디버깅

자주 쓰는 명령을 한 덩어리로 묶어 이름 붙이기 — 그것이 함수!
그리고 프로그램의 버그를 찾아 고치는 디버깅까지 배워 봅시다. 🐞

함수
매개변수·반환값
디버깅

학습 목표

[9정03-06] 함수를 활용하여 프로그램을 구조화하고, 오류를 수정(디버깅)하여 문제를 해결한다

  • 함수가 왜 필요한지 알고, 명령을 묶어 이름 붙여 재사용할 수 있다.
  • 매개변수로 값을 전달하고 반환값을 돌려받는 함수의 동작을 설명할 수 있다.
  • 프로그램의 오류(버그)를 찾아 고치는 디버깅 과정을 경험한다.

생각 열기 🤔

라면을 끓일 때마다 "물 붓기 → 끓이기 → 면 넣기 → 스프 넣기"를 매번 설명하긴 번거롭죠. 그냥 "라면 끓이기!" 한마디면 충분해요. 이렇게 여러 동작을 하나로 묶어 이름 붙인 것이 바로 함수예요! 🍜

그런데 라면을 끓였더니 너무 짜다면? 어디서 잘못됐는지 원인을 찾아 고쳐야 해요. 프로그램에서 잘못된 부분을 버그(bug), 그것을 찾아 고치는 일을 디버깅(debugging)이라고 한답니다. 🐞

💡 함수로 "묶고", 디버깅으로 "고친다" — 프로그래머의 두 가지 핵심 기술!

1. 함수란?

명령을 묶어 이름 붙이고, 다시 쓴다

함수(function)자주 쓰는 명령들을 하나로 묶어 이름을 붙인 것이에요. 한 번 만들어 두면 이름만 불러(호출) 몇 번이고 재사용할 수 있죠. 함수에 값을 넣어 주는 것매개변수, 함수가 돌려주는 결과반환값이라고 해요.

묶기

반복되는 명령을 한 덩어리로! 프로그램이 짧고 깔끔해져요.

재사용

한 번 만들면 이름만 불러 여러 번 사용! 같은 코드를 또 쓰지 않아요.

수정 쉬움

고칠 때 함수 한 곳만 바꾸면 끝! 실수도 줄어들어요.

📐 인터랙티브 · 함수 호출 시뮬레이터

다각형그리기(변의수, 색) 함수 하나로 여러 도형을! 매개변수만 바꿔 호출하면 같은 함수가 다른 그림을 그려요.

함수 정의

함수 다각형그리기(변의수, 색):
변의수개의 변으로
정다각형을 그린다
변의 수 5

호출식: 다각형그리기(5, 주황)

📜 호출 기록 (0회)

💡 함수는 한 번만 정의했어요. 그런데 매개변수(변의 수·색)를 바꿔 호출할 때마다 다른 도형이 나오죠? 이것이 함수의 재사용이에요!

2. 매개변수와 반환값

값을 넣으면(입력), 결과를 돌려준다(출력)

함수는 자판기와 비슷해요. 매개변수(입력)로 동전과 버튼을 넣으면, 반환값(출력)으로 음료가 나오죠! 예를 들어 합(3, 5) 함수는 매개변수 3과 5를 받아 반환값 8을 돌려줘요. 우리는 그 8을 다른 곳에 가져다 쓸 수 있고요.

💻 의사코드 — 더하기 함수

함수 (a, b):
반환 a + b
// 호출하는 곳
결과 = (3, 5) // 결과 = 8

a, b가 매개변수, a+b가 반환값!

🧩 스크래치 "나만의 블록"

a b 정의하기
( a + b ) 반환하기
3 5 → 8

스크래치에서는 함수를 "나만의 블록"으로 만들어요!

🎰 인터랙티브 · 함수 자판기 (반환값 체험)

두 수 a, b매개변수로 넣고 호출하면, 합(a, b) 함수가 반환값을 돌려줘요!

합 (
,
)
합(3, 5) 반환값 8

📜 호출 기록

💡 같은 함수라도 매개변수가 달라지면 반환값도 달라져요. a, b에 음수나 큰 수를 넣어 호출해 보세요!

3. 디버깅 (버그 찾기)

잘못된 곳을 찾아 고치는 탐정 놀이

프로그램이 생각대로 동작하지 않을 때, 그 오류버그(bug)라고 해요. 버그를 찾아 고치는 일이 디버깅(debugging)! 좋은 프로그래머는 코드를 잘 짤 뿐 아니라, 버그를 빠르게 찾아 고치는 사람이랍니다. 🕵️

1947년 컴퓨터 일지에 테이프로 붙인 나방 — 최초의 버그 기록

🦟 진짜 '벌레'에서 나온 말, 버그

1947년, 한 컴퓨터가 자꾸 오작동해 살펴보니 진짜 나방이 부품 사이에 끼어 있었어요. 연구원들은 그 나방을 일지에 붙이고 "최초로 버그(벌레)를 발견함"이라 적었죠. 그 뒤로 컴퓨터 오류를 버그, 그것을 고치는 일을 디버깅이라 부르게 됐답니다.

미 해군(U.S. Navy) · Public Domain · Wikimedia Commons

1

증상 관찰

어떤 결과가 잘못 나왔지?

2

원인 추측

어디가 의심스럽지?

3

코드 검사

한 줄씩 따라가 본다

4

수정·재실행

고치고 다시 확인!

🕵️ 인터랙티브 · 버그 찾기 챌린지

목표와 실제 결과를 비교해 보고, 버그가 있는 줄을 클릭하세요! 맞히면 고치는 방법이 나와요.

챌린지 1 1부터 5까지 더하기 (정답: 15)

🐞 증상: 프로그램이 멈추지 않고 무한 반복돼요!

1합계 = 0 2i = 1 3반복: i <= 5 인 동안 4   합계 = 합계 + i 5   i = i - 1 6합계 출력

↑ 버그가 의심되는 줄을 클릭해 보세요.

챌린지 2 짝수인지 판별하는 함수

🐞 증상: 4를 넣었는데 "홀수"라고 잘못 나와요!

1함수 짝수판별(n): 2   만약 (n을 2로 나눈 ) == 0 이면 3      "짝수" 말하기 4   아니면 5      "홀수" 말하기

↑ 버그가 의심되는 줄을 클릭해 보세요.

💡 버그는 대부분 아주 작은 차이예요. +-, 나머지처럼요. 그래서 한 줄씩 꼼꼼히 따라가는 습관이 중요해요!

참고 — 한 걸음 더 (성취기준 밖 심화)

🪆 재귀 — 함수가 자기 자신을 불러요

함수 안에서 자기 함수를 다시 부르는 것을 재귀라고 해요. 인형 속 인형(마트료시카)처럼요! 단, 멈추는 조건이 꼭 있어야 무한히 빠지지 않아요.

🔍 프로처럼 디버깅하기

① 값을 출력(print)해 어디서 틀렸는지 보기 · ② 한 줄씩 실행(중단점)하며 추적하기 · ③ 여러 경우로 테스트하기.

참고 — 프로그램은 함께 만들고 나눠요 (성취기준 밖 심화)

👯 짝 프로그래밍

둘이 한 화면에서 '운전자'(코딩)'길잡이'(점검) 역할을 번갈아 맡아요. 실수가 줄고 더 빨라요.

🌍 오픈 소스

누구나 보고·고치고·나눌 수 있게 공개한 코드예요. 리눅스·파이썬·안드로이드가 대표적!

🐙 깃·깃허브

여러 명이 같은 코드를 함께 고치고 변경 이력을 관리하는 도구예요(버전 관리).

🤝 공유의 힘

좋은 프로그램은 혼자보다 함께·나눌 때 더 좋아져요. 단, 남의 코드를 쓸 땐 라이선스를 지켜요!

핵심 정리

🧩

함수

자주 쓰는 명령을 묶어 이름 붙인 것. 한 번 만들어 여러 번 재사용(호출)한다.

🎰

매개변수 · 반환값

매개변수는 함수에 넣는 입력, 반환값은 함수가 돌려주는 결과. 자판기처럼!

🐞

디버깅

프로그램의 오류(버그)를 찾아 고치는 일. 증상 관찰 → 원인 추측 → 검사 → 수정!

확인 퀴즈

5문제로 함수와 디버깅을 점검해 봐요!

1

자주 쓰는 명령을 하나로 묶어 이름 붙여 재사용하는 것을 무엇이라 하나요?

변수
함수
반복문
조건문
2

함수에 값을 전달하기 위해 사용하는 입력을 무엇이라 하나요?

매개변수
반환값
버그
반복
3

합(4, 6) 함수가 두 수를 더해 돌려준다면, 반환값은 무엇일까요?

24
10
2
46
4

프로그램의 오류(버그)를 찾아 고치는 일을 무엇이라 하나요?

코딩
컴파일
디버깅
실행
5

함수를 사용하면 좋은 점으로 알맞지 않은 것은?

같은 코드를 여러 번 재사용할 수 있다
고칠 때 함수 한 곳만 바꾸면 된다
프로그램이 짧고 깔끔해진다
프로그램이 항상 무조건 빨라진다